home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 May / CMCD0504.ISO / Software / Freeware / Programare / dspack / DSPACK231.exe / {app} / Demos / D5 / PlayWin / main.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  2002-11-24  |  3.8 KB  |  146 lines

  1. unit main;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  7.   Dialogs, Menus, DSPack, StdCtrls, ComCtrls, dsutil, Buttons, ToolWin,
  8.   ImgList, SelectURL;
  9.  
  10. type
  11.   TFormPlayWin = class(TForm)
  12.     FilterGraph: TFilterGraph;
  13.     VideoWindow: TVideoWindow;
  14.     MainMenu: TMainMenu;
  15.     OpenDialog: TOpenDialog;
  16.     FileMenu: TMenuItem;
  17.     OpenMenu: TMenuItem;
  18.     OpenURLMenu: TMenuItem;
  19.     ExitMenu: TMenuItem;
  20.     TrackBar: TDSTrackBar;
  21.     ImageList: TImageList;
  22.     StatusBar: TStatusBar;
  23.     ToolBar: TToolBar;
  24.     btPlay: TToolButton;
  25.     btPause: TToolButton;
  26.     btStop: TToolButton;
  27.     ToolButton1: TToolButton;
  28.     SoundLevel: TTrackBar;
  29.     btFullScreen: TToolButton;
  30.     PopupMenu: TPopupMenu;
  31.     Play1: TMenuItem;
  32.     Pause1: TMenuItem;
  33.     Stop1: TMenuItem;
  34.     FullScreen1: TMenuItem;
  35.     log: TMemo;
  36.     ToolButton2: TToolButton;
  37.     procedure OpenMenuClick(Sender: TObject);
  38.     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  39.     procedure btPlayClick(Sender: TObject);
  40.     procedure btPauseClick(Sender: TObject);
  41.     procedure btStopClick(Sender: TObject);
  42.     procedure TrackBarTimer(sender: TObject; CurrentPos,
  43.       StopPos: Cardinal);
  44.     procedure SoundLevelChange(Sender: TObject);
  45.     procedure ExitMenuClick(Sender: TObject);
  46.     procedure OpenURLMenuClick(Sender: TObject);
  47.     procedure btFullScreenClick(Sender: TObject);
  48.     procedure FilterGraphDSEvent(sender: TComponent; Event, Param1,
  49.       Param2: Integer);
  50.  
  51.   private
  52.     { DΘclarations privΘes }
  53.   public
  54.     { DΘclarations publiques }
  55.   end;
  56.  
  57. var
  58.   FormPlayWin: TFormPlayWin;
  59.  
  60. implementation
  61. uses DirectShow9;
  62.  
  63. {$R *.dfm}
  64.  
  65. procedure TFormPlayWin.OpenMenuClick(Sender: TObject);
  66. begin
  67.   if OpenDialog.Execute then
  68.   begin
  69.     if not FilterGraph.Active then FilterGraph.Active := true;
  70.     FilterGraph.ClearGraph;
  71.     FilterGraph.RenderFile(OpenDialog.FileName);
  72.     VideoWindow.PopupMenu := PopupMenu;
  73.     SoundLevel.Position := FilterGraph.Volume;
  74.     FilterGraph.Play;
  75.   end;
  76. end;
  77.  
  78. procedure TFormPlayWin.FormCloseQuery(Sender: TObject;
  79.   var CanClose: Boolean);
  80. begin
  81.   // Important
  82.   FilterGraph.ClearGraph;
  83. end;
  84.  
  85. procedure TFormPlayWin.btPlayClick(Sender: TObject);
  86. begin
  87.   if not FilterGraph.Active then OpenMenuClick(nil)
  88.                             else FilterGraph.play;
  89. end;
  90.  
  91. procedure TFormPlayWin.btPauseClick(Sender: TObject);
  92. begin
  93.   FilterGraph.Pause;
  94. end;
  95.  
  96. procedure TFormPlayWin.btStopClick(Sender: TObject);
  97. begin
  98.   FilterGraph.Stop;
  99. end;
  100.  
  101. procedure TFormPlayWin.TrackBarTimer(sender: TObject; CurrentPos,
  102.   StopPos: Cardinal);
  103. begin
  104.   StatusBar.SimpleText := format('Position: %s Duration: %s',
  105.     [TimeToStr(CurrentPos / MiliSecPerDay), TimeToStr(StopPos / MiliSecPerDay)])
  106. end;
  107.  
  108. procedure TFormPlayWin.SoundLevelChange(Sender: TObject);
  109. begin
  110.   FilterGraph.Volume := SoundLevel.Position;
  111. end;
  112.  
  113. procedure TFormPlayWin.ExitMenuClick(Sender: TObject);
  114. begin
  115.   FormPlayWin.Close;
  116. end;
  117.  
  118. procedure TFormPlayWin.OpenURLMenuClick(Sender: TObject);
  119. begin
  120.   FormSelectURL:= TFormSelectURL.Create(nil);
  121.   if FormSelectURL.ShowModal = mrOK then
  122.   begin
  123.     if not FilterGraph.Active then FilterGraph.Active := true;
  124.     FilterGraph.ClearGraph;
  125.     FilterGraph.RenderFile(FormSelectURL.URL.Text);
  126.     VideoWindow.PopupMenu := PopupMenu;
  127.     SoundLevel.Position := FilterGraph.Volume;
  128.     FilterGraph.Play;
  129.   end;
  130.   FormSelectURL.Free;
  131. end;
  132.  
  133. procedure TFormPlayWin.btFullScreenClick(Sender: TObject);
  134. begin
  135.   VideoWindow.FullScreen := not VideoWindow.FullScreen;
  136.   btFullScreen.Down := VideoWindow.FullScreen;
  137. end;
  138.  
  139. procedure TFormPlayWin.FilterGraphDSEvent(sender: TComponent; Event,
  140.   Param1, Param2: Integer);
  141. begin
  142.   log.Lines.Add(GetEventCodeDef(event))
  143. end;
  144.  
  145. end.
  146.